package br.com.requisicao.compra.dao.impl;

import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.requisicao.compra.canonico.TipoUsuario;
import br.com.requisicao.compra.canonico.Usuario;
import br.com.requisicao.compra.dao.IUsuarioDAO;
import br.com.requisicao.compra.util.HibernateUtil;


public class UsuarioDAO implements IUsuarioDAO {

	public Usuario salvar(Usuario usuario, TipoUsuario tipoUsuario) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			session.saveOrUpdate(tipoUsuario);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;

	}

	public List<Usuario> obtemUsuario() {
		Session session = HibernateUtil.getSession();
		List<Usuario> listaUsuario = null;
		try {

			Criteria criteria = session.createCriteria(Usuario.class);
			listaUsuario = (List<Usuario>) criteria.addOrder(
					Order.asc("nomeUsuario")).list();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return listaUsuario;
	}

	public Usuario excluir(Usuario usuario) {
		Session session = HibernateUtil.getSession();
		Transaction tx = session.beginTransaction();
		try {
			session.delete(usuario);
			tx.commit();
			session.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public Usuario obtemUsuarioPorLogin(String login) {
		Session session = HibernateUtil.getSession();
		Usuario usuario = null;
		try {

			Criteria criteria = session.createCriteria(Usuario.class);
			criteria.add(Restrictions.eq("nomeUsuario", login));

			usuario = (Usuario) criteria.uniqueResult();

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
		return usuario;
	}
}
